#ifndef COLORITEM_H
#define COLORITEM_H

#include <QGraphicsItem>
/*
QGraphicsItem类是QGraphicsScene中所有图形项的基类。
它为编写自己的自定义项提供了一个轻量级的基础。这包括定义项目的几何图形、碰撞检测、绘画实现以及通过其事件处理程序进行的项目交互。
QGraphicsItem是图形视图框架的一部分。
为了方便起见，Qt为最常见的形状提供了一组标准图形项。这些是：
QGraphicsEllipseItem提供一个椭圆项
QGraphicsLineItem提供直线项
QGraphicsPathItem提供路径项
QGraphicsPixmapItem提供了一个像素映射项
QGraphicsPolygonItem提供一个多边形项
QGraphicsRegItem提供一个矩形项目
QGraphicsSimpleTextItem提供了一个简单的文本标签项
QGraphicsTextItem提供了一个（高级）文本项
项目的所有几何信息都基于其局部坐标系。项的位置pos（）是唯一不在局部坐标中操作的函数，因为它返回项目在父坐标中的位置。
图形视图坐标系详细描述了坐标系。
您可以通过调用setVisible（）来设置项是否可见（即绘制和接受事件）。隐藏项目也会隐藏其子项。
类似地，您可以通过调用setEnabled（）来启用或禁用项。如果禁用某个项目，它的所有子项也将被禁用。默认情况下，项目同时可见和启用。
要切换是否选择项目，请首先通过设置ItemIsSelectable标志启用选择，然后调用setSelected（）。
通常情况下，选择是由场景切换的，这是用户交互的结果。
要编写自己的图形项，首先创建QGraphicsItem的一个子类，然后从实现其两个纯虚拟公共函数开始：boundingRect（）和paint（），
前者返回该项绘制的面积估计值，后者实现实际绘制。例如
*/
class ColorItem : public QGraphicsItem
{
public:
    ColorItem();

    QRectF boundingRect() const override;
    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;

protected:
    void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
    void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;

private:
    QColor color;
};

#endif // COLORITEM_H
